The proliferation of devices and their various capabilities for single-point and multi-point pointing devices—including touchscreens, computer mice, touchpads, and even infrared or computer vision pointing devices—has led to a need for software to provide GUIs that are flexible and aware of differing hardware capabilities as well as user expectation and experience.
Graphical object manipulation by multiple control points is well known in the art. One such manipulation is a multi-touch gesture. It is also well known that the number of control points used to manipulate graphical objects may over- or under-constrain the possible movement of the graphical object, depending on the constraints of the movement defined by the software. For example, many multi-touch photo galleries allow images to be re-positioned, but not rotated or resized. Others may allow position, scale, and rotation to be adjusted, or adjusted within constraints, such as constraining rotation to 90-degree increments. In 3D applications, the graphical objects on the screen are 2D depictions of objects in the 3D space in the application. There are more degrees of freedom in 3D, as well as the problem of translating 2D screen coordinates of user manipulations to the underlying 3D objects. Because of this, intuitive GUIs are difficult to create in the 3D modeling space, while the growth and consumer adoption of 3D applications (such as modeling for 3D printing, augmented reality, etc.) has created a necessity for more user-friendly, intuitive 3D modeling GUIs and applications.
Multi-touch gestures allow users to manipulate graphical objects in intuitive ways, removing the necessity of separate controls for each degree of movement. For example, before multi-touch pointing devices were prevalent, software typically displayed separate controls for scaling, rotating, and translating graphical objects in 2D, and even more controls for objects in 3D. Multi-touch devices provide intuitive mechanisms for many such operations, with the user applying one control point, secondary control points, manipulating the control points relative to one another, and releasing control points, with the return to zero control points typically indicating the end of the user's interaction sequence. Today, interfaces often must be usable on both single and multi-touch devices, and usable by users of varying skill and experience in interacting with multi-touch devices. Users also have an expectation of simplicity and consistency across devices, while available screen space and user input mechanisms vary widely.
When software allows graphical objects to be manipulated, it is well known in the art that there are frequently one or more desired final orientations (including but not limited to position, scale, and rotation) of a graphical object. For example, when manipulating an application icon on a home screen or desktop, a grid layout defines a plurality of possible target orientations of the icon. When manipulating sectors of a circle that form a pie chart, aligning the centroid and edge of the sector with those already in place defines a plurality target orientations of the sector. In some cases, the existence of other graphical objects define target orientations for the graphical object being manipulated, as it is common to align graphical objects with one another. While this description cites specific examples of applications and their target orientations for clarity, it is not intended to limit the scope of the invention.